package negocios;

import negocios.excecoes.LocalizacaoException;

/**
 * Classe que implementa uma estrategia de Localizacao, atraves da insercao de
 * dados manuais.
 * 
 * @author Jonathan Brilhante
 * @author Jose Rafael
 * @author Nata Venancio
 * @author Renato Almeida
 * 
 * @version 1.0
 */

public class LocalizadorManual implements Localizador {
	private static final double MIN_LATITUDE = -90.0;
	private static final double MAX_LATITUDE = 90.0;
	private static final double MIN_LONGITUDE = -180.0;
	private static final double MAX_LONGITUDE = 180.0;

	private double latitude;
	private double longitude;

	/**
	 * Constroi um LocalizadorManual, atraves dos dados de longitude e latitude
	 * 
	 * @param latitude
	 *            a latitude
	 * @param longitude
	 *            a longitude
	 * @throws LocalizacaoException
	 *             caso os dados sejam invalidos.
	 */
	public LocalizadorManual(double latitude, double longitude)
			throws LocalizacaoException {
		if (latitude < MIN_LATITUDE || latitude > MAX_LATITUDE
				|| longitude < MIN_LONGITUDE || longitude > MAX_LONGITUDE) {
			throw new LocalizacaoException("Latitude/Longitude invalidos.");
		}
		this.latitude = latitude;
		this.longitude = longitude;
	}

	public Localizacao getLocalidade() {
		return new Localizacao(latitude, longitude);
	}

	/**
	 * Retorna a latitude usada nesse localizador
	 * 
	 * @return a latitude usada nesse localizador
	 */
	public double getLatitude() {
		return latitude;
	}

	/**
	 * Retorna a longitude usada nesse localizador
	 * 
	 * @return a longitude usada nesse localizador
	 */
	public double getLongitude() {
		return longitude;
	}
}